// 导入数据库模块，用于对文章列表进行处理
const db = require("../db/index");

exports.getArticleCates = (req, res) => {
  const queryStr = `select * from article_cate where is_delete = 0 order by id asc`;

  db.query(queryStr, (err, results) => {
    if (err) return res.cc(err.message);

      res.send({
      status: 0,
      message: "获取文章分类列表成功!",
      data: results,
    });

  });
  
};

exports.addArticleCates = (req, res) => {
  // 1.查询 分类名称、分类别名 是否被占用，因为这两个字段都是Unique
  const queryStr = `select * from article_cate where name = ? or alias = ?`;

  db.query(queryStr, [req.body.name, req.body.alias], (err, results) => {
    if (err) return res.cc(err.message);

    // 1.1 有两条数据，一条分类名称相同，一条分类别名相同
    if (results.length === 2)
      return res.cc("分类名称与分类别名被占用!请更换后重试!");

    // 1.2 一条数据，分类名称、分类别名都相同
    if (
      results.length === 1 &&
      req.body.name === results[0].name &&
      req.body.alias === results[0].alias
    )
      return res.cc("分类名称与分类别名被占用!请更换后重试!");

    if (results.length === 1 && req.body.name === results[0].name)
      return res.cc("分类名称被占用!请更换后重试!");

    if (results.length === 1 && req.body.alias === results[0].alias)
      return res.cc("分类名称被占用!请更换后重试!");

    // 2.添加数据
    const addStr = `insert into article_cate(name,alias) values(?,?) `;

    db.query(addStr, [req.body.name, req.body.alias], (err, results) => {
      if (err) return res.cc(err.message);

      if (results.affectedRows !== 1) return res.cc("新增文章分类失败!");

      res.cc("新增文章分类成功!", 0);
    });
  });
};

exports.deleteCateById = (req, res) => {
  const deleteStr = `delete from article_cate where id = ?`;

  /**
   * 从req获取参数时，注意区分 是动态参数 params 还是 query
   * 一般根据某个参数删除、更新、查询就需要用到动态参数，形式为 :id
   * query 则是指根据某些参数来查询 ?name=xxx&&age=xxx
   * */
  db.query(deleteStr, req.params.id, (err, results) => {
    if (err) return res.cc(err.message);

    if (results.affectedRows !== 1) return res.cc("删除文章分类失败!");

    res.cc("删除文章分类成功!", 0);
  });
};

exports.getCateById = (req, res) => {
  const queryStr = `select * from article_cate where id = ?`;

  db.query(queryStr, req.params.id, (err, results) => {
    if (err) return res.cc(err.message);

    if (results.affectedRows !== 1) return res.cc("获取文章分类失败!");

    res.send({
      status: 0,
      message: "获取文章分类数据成功！",
      data: results[0],
    });
  });
};
